home *** CD-ROM | disk | FTP | other *** search
/ Interplay's Learn to Program Basic (Review Copy) / Learn to Program Basic Review Copy (Interplay)(June 23, 1998).ISO / pc / ltpbasic / projects / haunted.bas < prev    next >
BASIC Source File  |  1998-02-21  |  3KB  |  164 lines

  1. Rem Haunted House
  2. Rem Shooting Gallery
  3.  
  4. Rem See the bottom of this program
  5. Rem for ideas on things you can
  6. Rem change.
  7.  
  8. cls
  9. Rem Define variables that will
  10. Rem be used later in the program.
  11. Rem You can play with these values
  12. Rem and see what happens.
  13. Delay = 5000
  14. Score = 0
  15. myBackground$ = "Castle"
  16. emptyColor = 95
  17. fullColor = 167
  18. shotSize = 45
  19.  
  20. Rem Load the sounds we'll use
  21. shotSnd = LoadSound("LAZER2")
  22. Rem Choose from a list of random sounds
  23. Rem that we play when monster appears
  24. numPopupSnds = 4
  25. Dim popupSnd(numPopupSnds)
  26. popupSnd(1) = LoadSound("LaughEvl")
  27. popupSnd(2) = LoadSound("Stomach")
  28. popupSnd(3) = LoadSound("Squawk1")
  29. popupSnd(4) = LoadSound("Digrdont")
  30. Rem Choose from a list of random sounds
  31. Rem that we sometimes play when a
  32. Rem creature gets shot
  33. numOtherSnds = 3
  34. Dim otherSnd(numOtherSnds)
  35. otherSnd(1) = LoadSound("Scream")
  36. otherSnd(2) = LoadSound("DuckDth")
  37. otherSnd(3) = LoadSound("Gloop")
  38.  
  39. Rem First set up an array to hold
  40. Rem the X/Y coordinates of all the
  41. Rem windows in the haunted house...
  42. Dim Target(10,2)
  43.  
  44. Rem ...Then read the X/Y coordinates
  45. Rem into that array.
  46. For t = 1 to 10
  47. Read Target(t,1)
  48. Read Target(t,2)
  49. next t
  50.  
  51. data 37,17,255,5,36,100,112,98,180,98
  52. data 255,79,36,170,111,184,179,184,255,143
  53.  
  54. Rem Set up the screen.
  55. Background myBackground$
  56. bandit = LoadSprite("bandits")
  57. SetSprite bandit to -100,-100
  58.  
  59. Rem OK, now we've set up the things
  60. Rem that we only need to set up once
  61. Rem at the beginning.  Now let's
  62. Rem start a loop and begin the game
  63. Rem itself.
  64. while 1
  65. Rem Pick a random window
  66. Rem and put in a creature
  67. window = random(1,9)
  68. x1 = target(window,1)
  69. y1 = target(window,2)
  70. x2 = x1+31
  71. y2 = y1+31
  72. SetSprite bandit frame random(0,4)
  73. SetSprite bandit to x1,y1
  74. PlaySound(popupSnd(Random(1,numPopupSnds)))
  75. Rem Draw timer bar
  76. Color emptyColor
  77. FillRect 0,226 to 319,239
  78. Position 0,14
  79. Print "Score:";score;
  80. Color 21
  81.  
  82. Rem Set up for this bullet
  83. hit = 0
  84. timestart = timer()
  85. timeend = timestart + delay
  86. curtime = timer()
  87.  
  88. Rem Main Loop
  89. while hit = 0 and curtime < timeend
  90. Rem Update the timer bar...
  91. curtime = timer()
  92. fraction = curtime - timestart
  93. fraction = fraction / delay
  94. fraction = 1.0 - fraction
  95. Color fullColor
  96. FillRect 320*fraction,226 to 319,239
  97. Color 21
  98.  
  99. Rem Check if we've "fired"
  100. Rem our gun at the
  101. Rem creature
  102. if ClickRect(x1,y1 to x2,y2) then
  103. gosub GunShot
  104. Score = Score + 1
  105. Background myBackground$
  106. Delay = Delay - 25
  107. hit = 1
  108. Rem see if we should play one of
  109. Rem our "other" sounds
  110. If Random(1,100) < 20 Then
  111. PlaySound(otherSnd(Random(1,numOtherSnds)))
  112. Endif
  113. endif
  114. wend
  115.  
  116. Rem Hit is 0 when the timer bar counts down to 0 - End the game
  117. if hit = 0 then
  118. HideSprite bandit
  119. Cls
  120. Print "Game Over!"
  121. Sound "Headshke"
  122. Print
  123. Print "You were able to get ";score;" monsters."
  124. Sleep 30 ' wait for sound to end
  125. end
  126. endif
  127.  
  128. wend
  129.  
  130. end
  131.  
  132. Rem A successful hit!
  133. Rem do a "gunshot" effect
  134. GunShot:
  135. PlaySound(shotSnd)
  136. x3 = x1 + x2
  137. x3 = x3 / 2
  138. y3 = y1 + y2
  139. y3 = y3 / 2
  140. for z = 1 to shotSize
  141. Circle x3,y3,z
  142. Color random(0,235)
  143. next z
  144. color 31
  145. return
  146.  
  147.  
  148. Rem Ideas for changes:
  149. Rem - Lose 1 point for a miss
  150. Rem - Gain 2 points for a hit
  151. Rem - Change the sounds
  152. Rem - Put in a "smart bomb" if
  153. Rem   you hit the space bar, for
  154. Rem   an automatic hit
  155. Rem - Add "levels" to the game, so
  156. Rem   every 10 points you go up
  157. Rem   a level and the game speeds
  158. Rem   up a little
  159. Rem - Or, when you go up a level,
  160. Rem   make an additional monster
  161. Rem   appear
  162.  
  163.